Skip to content

[pull] master from DataDog:master#484

Merged
pull[bot] merged 4 commits into
ConnectionMaster:masterfrom
DataDog:master
Apr 16, 2026
Merged

[pull] master from DataDog:master#484
pull[bot] merged 4 commits into
ConnectionMaster:masterfrom
DataDog:master

Conversation

@pull

@pull pull Bot commented Apr 16, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

mobuchowski and others added 4 commits April 16, 2026 14:46
* Add data_observability config to Postgres

* Add async job

* Ddev update

* Fmt

* initial move to postgres

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* fix ai issues

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* move to postgres check

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* code review updates

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* Fix test_config and test_config_defaults for DATA_OBSERVABILITY feature

Add DATA_OBSERVABILITY to the expected feature set in
test_initialize_features_enabled_and_disabled and add
the data_observability defaults entry to EXPECTED_DEFAULTS
in test_config_defaults.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* Strip trailing semicolons before subquery wrapping

Queries with a trailing semicolon would produce invalid SQL when wrapped
in SELECT * FROM (...) _dd_row_limit LIMIT N. Strip trailing semicolons
and whitespace from the query string before constructing the wrapper.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* Switch query_status gauge to query_executions counter with status tag

Replace gauge(query_status, 1/0) with count(query_executions, 1, status:success/error).
A counter allows computing failure rate over time; a gauge hides flakiness because
a single successful check in a window obscures preceding failures.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* Remove subquery wrapping; rely on fetchmany for row cap

The SELECT * FROM (...) _dd_row_limit LIMIT N wrapper broke on real RC
queries which have trailing semicolons or trailing -- Datadog {...} comments
appended by the Go handler. Both cause syntax errors inside the subquery.

fetchmany(MAX_RESULT_ROWS) is a sufficient memory safety net on the Python
side. Executing the query as-is avoids all SQL manipulation.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* address code review

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* fmt

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* explanation

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* process grouped queries by db, use per-db conn

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

* run with newer ddev

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>

---------

Signed-off-by: mobuchowski <maciej.obuchowski@datadoghq.com>
Co-authored-by: Seth Samuel <seth.samuel@datadoghq.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…p that triggers the build (#23063)

* Pass PACKAGE_BASE_URL to triggered agent builds

When integrations-core triggers agent CI builds, pass PACKAGE_BASE_URL
pointing to dev storage. This prepares for lockfiles switching to
${PACKAGE_BASE_URL}/... format so PR-triggered builds use dev wheels.
No-op today since current lockfiles use hardcoded URLs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update ddev size tools to handle both lockfile URL formats

Support both the legacy hardcoded URL format and the new
\${PACKAGE_BASE_URL}/... template format in lockfile entries.
Resolves \${PACKAGE_BASE_URL} to the stable base URL before
downloading wheels for size calculations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Upload wheels to dev/ prefix and use \${PACKAGE_BASE_URL} in lockfiles

Wheels are now uploaded to dev/{artifact_type}/{project_name}/ paths
in GCS instead of the unprefixed paths. Lockfile entries are templated
with \${PACKAGE_BASE_URL} so pip resolves the URL at install time using
either the dev or stable base URL depending on the environment.

Also fix brittle index extraction in generate_artifact_listings and
list_wheels_with_prefix to use split('/')[-1] and split('/')[-2]
instead of hardcoded indices.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Update promote.py to parse \${PACKAGE_BASE_URL} lockfile format

Lockfiles now use \${PACKAGE_BASE_URL}/... template entries instead of
hardcoded URLs. Update url_to_blob_path to extract the relative path
from \${PACKAGE_BASE_URL}/... entries, then prepend dev/ when looking up
blobs in GCS and stable/ for the promotion destination.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Change publish job to run on PRs only and commit lockfiles to branch

Instead of creating a separate PR with updated lockfiles, the publish
job now commits them directly to the PR branch. This collapses the
two-PR dependency update workflow into a single PR.

- Trigger: pull_request only (remove push and workflow_dispatch)
- Permission: contents: write (needed for git push)
- Token: GitHub App token checked out before checkout so push works
- Replace peter-evans/create-pull-request with a git commit + push step

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add promote-gate and promote-wheels workflows

promote-gate.yaml runs on every PR push to master/7.*.*. If dependency
files (agent_requirements.in or .deps/resolved/) changed, it sets the
promote-wheels commit status to pending, blocking merge. Otherwise it
sets it to success (no promotion needed).

promote-wheels.yaml is triggered via workflow_dispatch (by ddev promote).
It checks out the PR branch at the given SHA, runs .builders/promote.py
to copy wheels from dev/ to stable/ in GCS, then sets the promote-wheels
commit status to success and posts a comment on the PR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Update upload tests and add promote tests for new lockfile format

test_upload.py: update all blob path assertions to use dev/ prefix
and all lockfile URL assertions to use \${PACKAGE_BASE_URL} format.
Update generate_artifact_listings assertions to use dev/-prefixed paths.

test_promote.py (new): test lockfile parsing, url_to_blob_path,
collect_relative_paths, GCS copy with correct dev/stable paths,
idempotency, and failure on missing source blobs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* add changelog

* Update dependency resolution [skip ci]

* Replace PACKAGE_BASE_URL with INTEGRATIONS_WHEELS_STORAGE

PACKAGE_BASE_URL was a full URL env var, which is more than needed and
potentially dangerous. Replace it with INTEGRATIONS_WHEELS_STORAGE whose
value is only "dev" or "stable".

Lockfile entries now use the form:
  https://agent-int-packages.datadoghq.com/\${INTEGRATIONS_WHEELS_STORAGE}/...

The base domain is hardcoded; only the storage tier is variable. This
limits what a compromised env var could redirect to.

Update all affected files: upload.py, promote.py, size tools, tests,
build_agent.yaml, and the promotion workflows.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Rename promotion workflows to dependency-wheel-promotion{,-gate}

Rename promote-gate.yaml -> dependency-wheel-promotion-gate.yaml and
promote-wheels.yaml -> dependency-wheel-promotion.yaml so the two
related workflows sort next to each other and their purpose is explicit.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix promote-gate to use GitHub API instead of git diff

The actions/checkout shallow clone does not include the base branch,
so git diff --name-only against origin/<base> fails. Replace the git
command with a GitHub API call (pulls.listFiles) which does not require
a checkout at all.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Skip publish job for fork PRs in resolve-build-deps

Fork PRs cannot access repo secrets (GCS credentials, GitHub App key)
or the Workload Identity Provider used by google-github-actions/auth.
Add !github.event.pull_request.head.repo.fork to the publish job condition
so it only runs on PRs from branches within the repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Add ddev dep promote command to trigger wheel promotion

ddev dep promote <PR_URL> extracts the PR number from the URL, fetches
the head SHA and branch from the GitHub API, then dispatches the
dependency-wheel-promotion workflow via workflow_dispatch.

This avoids both wasted runner minutes (no issue_comment polling) and
new infrastructure (no webhook handler). The workflow only runs when
explicitly dispatched.

Also add get_pr_head() and dispatch_workflow() to GitHubManager.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix lint

* codex feedback

* Update dependency resolution [skip ci]

* Enable CI when resolving deps

* Address feedback

* Update dependency resolution [skip ci]

* Temporarily use push trigger on promotion gate for testing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Update dependency resolution [skip ci]

* Update dependency resolution [skip ci]

* Fix dependency resolution commit message (again)

* Update dependency resolution

* Fix build-agent-auto glob to match .deps subdirectories

The `.deps/*` glob only matches files directly in `.deps/`, not in
subdirectories like `.deps/resolved/`. Use `**/*` to recurse.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Revert "Temporarily use push trigger on promotion gate for testing"

This reverts commit 28fb9d5.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: dd-agent-integrations-bot[bot] <dd-agent-integrations-bot[bot]@users.noreply.github.com>
…#23194)

* Test Incident_io README changes with new shortcode

* Add webhook_config.json
@pull pull Bot locked and limited conversation to collaborators Apr 16, 2026
@pull pull Bot added the ⤵️ pull label Apr 16, 2026
@pull pull Bot merged commit 596211f into ConnectionMaster:master Apr 16, 2026
@pull pull Bot had a problem deploying to typo-squatting-release April 17, 2026 05:28 Failure
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants